package com.heima.article.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.common.dtos.ArticleDto;
import com.heima.model.common.dtos.ArticleHomeDto;
import com.heima.model.common.dtos.ReadBehaviorDto;
import com.heima.model.common.dtos.CommentStatus;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.common.dtos.*;
import com.heima.model.common.pojos.article.ApArticle;
import com.heima.model.common.pojos.article.ApArticleConfig;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author 陈辉
 * @data 2024 9:49
 */
public interface ApArticleService extends IService<ApArticle> {

    /**
     * 加载文章信息
     *
     * @param homeDto 查询条件
     * @param type    1：加载更多 2：加载更新
     * @return
     */
    ResponseResult load(ArticleHomeDto homeDto, int type);

    /**
     * 保存或修改文章信息
     *
     * @param articleDto
     * @return
     */
    ResponseResult saveOrUpdateArticle(ArticleDto articleDto);

    /**
     * 文章上下架
     *
     * @param map
     */
    void downOrUp(Map map);

    ResponseResult CommentStatus(CommentStatus commentStatus);

    ResponseResult articlesele(List<Long> entryIds);

    List<ApArticle> getArticle(Integer userId, Date end, Date begin);

    ApArticleConfig getConfig(Long id);

    ResponseResult findId(ArticleDto articleDto);

    /**
     * 更新文章
     *
     * @param behaviorDto
     * @return
     */
    ResponseResult updateArticle(ReadBehaviorDto behaviorDto);

    /**
     * 加载文章行为-数据回显
     *
     * @param articleInfoDto
     * @return
     */
    ResponseResult loadBehavior(ArticleInfoDto articleInfoDto);

    /**
     * 查询用户id
     *
     * @param
     * @return
     */
    ResponseResult getArticleList(String beginDate, String endDate, Integer userId);

    /**
     * 更新文章状态
     * @param commentStatus
     * @return
     */
    ResponseResult updateStatus(CommentStatus commentStatus);

    Page<ApArticle> getArticle2(Integer userId, Date end, Date begin, FindNewsDto findNewsDto);
    /**
     * 进行分页查询
     *
     * @param beginDate
     * @param endDate
     * @param page
     * @param pageSize
     * @param userId
     * @return
     */
    ResponseResult getPage(String beginDate, String endDate, Integer page, Integer pageSize, Integer userId);

    /**
     * 更新文章收藏
     * @param behaviorDto
     * @return
     */
    ResponseResult updateCollection(CollectionBehaviorDto behaviorDto);


}
